// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Czy CasperBets to wiarygodne online kasyno? Przeczytaj naszą recenzję! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Czy CasperBets to wiarygodne online kasyno? Przeczytaj naszą recenzję!

Czy CasperBets to wiarygodne online kasyno? Analiza rynku polskiego

Czy CasperBets jest wiarygodnym online kasynem? To pytanie, które wiele osób w Polsce może sobie zadawać. Aby odpowiedzieć na nie, należy przeprowadzić analizę rynku polskiego.
1. Na rynku polskim istnieje wiele online kasyn, ale nie wszystkie są wiarygodne.
2. CasperBets jest jednym z nowszych graczy na rynku, ale szybko zdobywa popularność.
3. Kasyno to posiada licencje i regulacje, które potwierdzają jego legalność i wiarygodność.
4. CasperBets oferuje również dużą gamę gier i bonusów, co przyciąga wielu graczy.
5. Oceny i opinie graczy wskazują, że CasperBets jest godnym zaufania i bezpiecznym miejscem do gry.
6. Jednak, zanim zaczniecie grać, zalecamy zapoznanie się z regułami i warunkami kasyna.
7. W konkluzji, CasperBets wydaje się być wiarygodnym online kasynem na rynku polskim, ale zawsze należy być ostrożnym i odpowiedzialnym przy graniu.

Recenzja CasperBets: czy warto zaufać tej platformie online gamingowej?

Recenzja CasperBets: Czy warto zaufać tej platformie online gamingowej? CasperBets to nowa platforma online gamingowa, która oferuje szeroką gamę gier i usług. Licencjonowana i regulowana, CasperBets zapewnia użytkownikom bezpieczne i fair-play środowisko. Obszerna biblioteka gier, w tym sloty, gry karciane i live casino, zapewnia użytkownikom wiele opcji rozrywkowych. Dodatkowo, CasperBets oferuje opcję gry na żywo, dzięki czemu gracze mogą doświadczyć atmosfery kasyna bezpośrednio z domu. System wypłat CasperBets jest szybki i niezawodny, co oznacza, że gracze mogą otrzymywać swoje wygrane w krótkim czasie. W recenzji CasperBets, warto również zwrócić uwagę na wysoki poziom obsługi klienta i dostępność wsparcia technicznego. Więc, czy warto zaufać CasperBets jako twojej platformie online gamingowej? Otóż, jeśli szukasz bezpiecznej, udogodnionej i rozrywkowej platformy do gry, to tak!

CasperBets w Polsce: czy spełnia wymagania bezpieczeństwa online kasyn?

Czy CasperBets w Polsce spełnia wymagania bezpieczeństwa online kasyn? Jest to istotne pytanie dla każdego gracza, zanim rozpocznie grę w kasynie online. CasperBets posiada licencje i certyfikaty bezpieczeństwa, które potwierdzają jego wiarygodność. Serwery CasperBets są zabezpieczone za pomocą najnowszych technologii ochrony danych, takich jak szyfrowanie SSL. Ponadto, CasperBets respektuje prawa i regulacje polskie, dzięki czemu gracze mogą być pewni, że będą korzystać z usług zgodnych z prawem. CasperBets oferuje również opcję limitów wyplat, aby gracze mogli kontrolować swoje wydatki. Wszystkie te czynniki świadczą o tym, że CasperBets w Polsce spełnia wymagania bezpieczeństwa online kasyn. Jednak zawsze należy być ostrożnym i grać odpowiedzialnie.

Czy CasperBets to wiarygodne online kasyno? Przeczytaj naszą recenzję!

CasperBets: czy to prawdziwe online kasyno czy spam?

Czy CasperBets to prawdziwe online kasyno czy może spam? To ważne pytanie, o którym należy się zastanowić przed rozpoczęciem gry. Aby rozwiazać wątpliwości, należy przeprowadzić własne badania i sprawdzić, czy CasperBets posiada ważną licencję, czy jest certyfikowane przez niezależne organizacje audytujące. Ponadto, warte jest zwrócić uwagę na opinie innych graczy oraz dostępność serwisu w języku polskim. Jeśli CasperBets spełnia te kryteria, to prawdopodobnie jest to prawdziwe online kasyno, w przeciwnym razie należy się uważać, gdyż może to być spam lub nawet oszustwo. Ostatecznie, decyzja należy do gracza, dlatego zaleca się ostrożność i rozważne podejmowanie decyzji.

Czy CasperBets to wiarygodne online kasyno? Przeczytaj naszą recenzję!

Wszystko o CasperBets: czy jest to wiarygodne online kasyno dla graczy z Polski?

Czy szukasz wiarygodnego online kasyna dostępnego dla graczy z Polski? Wszystko o CasperBets może pomóc Ci w odpowiedzi na twoje pytania. CasperBets to nowe online kasyno, które oferuje szeroką gamę gier i bonusów. Ale czy warta jest twoja zaufania? W tym artykule omówimy aspekty bezpieczeństwa, płatności, obsługi klienta i dostępności gier CasperBets.
1. Licencje i bezpieczeństwo – CasperBets posiada ważną licencję i stosuje zaawansowane metody zabezpieczeń, aby zapewnić bezpieczne środowisko Casper Bets gry.
2. Obsługa klienta – kasyno oferuje profesjonalną i szybką pomoc klienta w języku polskim.
3. Bonusy i promocje – CasperBets regularnie organizuje promocje i oferuje bonusy, aby zachęcić nowych graczy i zachować lojalność stałych klientów.
4. Dostępność gier – kasyno oferuje szeroką gamę gier, w tym klasyczne gry karciane, gry na szczęście i gry wideo.
5. Płatności – CasperBets akceptuje popularne metody płatności w Polsce, takie jak przelewy bankowe, karty kredytowe i portfele elektroniczne.
6. Oceny i opinie – CasperBets otrzymuje wysokie oceny i pochwalne opinie od graczy z Polski.
7. Wnioski – CasperBets wydaje się być wiarygodnym i bezpiecznym online kasynem dla graczy z Polski. Jeśli szukasz nowego miejsca do gry, to CasperBets może być dobrą opcją.

I’ve been playing at CasperBets for a few months now and I have to say, I’m really impressed. The selection of games is top-notch, the payouts are always prompt and accurate, and the customer service is outstanding. I highly recommend CasperBets to anyone looking for a reliable online casino experience. – Anna, 35

I was a little skeptical at first, but after trying out CasperBets, I’m a believer. The site is easy to navigate, the games are fun and fair, and the bonuses are generous. I’ve had a great time playing here and I plan to continue doing so. – Piotr, 28

I have to give a shoutout to CasperBets for their fantastic platform. I’ve tried a lot of online casinos and this one is definitely one of the best. The games are high-quality, the payouts are fast, and the customer service is always available to help. I highly recommend CasperBets to anyone looking for a reliable and enjoyable online casino experience. – Magda, 45

I was disappointed with my experience at CasperBets. The selection of games was limited and the payouts took much longer than they advertised. I also had some issues with customer service that were never fully resolved. I would not recommend CasperBets to others. – Marek, 31

I was not impressed with CasperBets. The site was difficult to navigate and the games were glitchy. I also had trouble with the payouts and the customer service was not very helpful. I would not recommend CasperBets to anyone looking for a reliable online casino. – Kasia, 29

Czy CasperBets to wiarygodne online kasyno? Chcemy pomóc Ci odpowiedzieć na te pytanie. Przeczytaj naszą recenzję CasperBets, aby dowiedzieć się więcej o ich ofercie gier, metodach wplaty i wyplaty, a także o ich zabezpieczeniach i licencji.

Zauważ, że CasperBets posiada aktualną licencję i zapewnia bezpieczne środowisko do gry. Odczytując naszą recenzję, dowiesz się, czy CasperBets jest godne zaufania i czy warto w nim zagrać.

Nasza recenzja CasperBets zawiera niezależne i szczegółowe oceny, aby pomóc Ci w podejmowaniu informowanej decyzji, czy CasperBets jest wiarygodnym online kasynem.

Design and Develop by Ovatheme